<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="./../../resources/templates/baseTemplate.xhtml">

    <ui:define name="content">
        <f:view id="vRoot">
            <p:fieldset legend="Gerenciar tipo de evento">
                <h:form id="frmTiposEvento">
                    <!-- Exibicao de mensagens gerais -->
                    <p:growl  id="gMessages" globalOnly="true" sticky="false"/>

                    <!-- Exibicao da lista de tipos de publicos -->
                    <p:dataTable id="dtTiposEvento"
                                 value="#{tipoEventoBean.tiposEvento}"
                                 paginator="true" rows="5" 
                                 rowsPerPageTemplate="5,10"
                                 paginatorPosition="bottom"
                                 paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                 var="atual">

                        <f:facet name="header">
                            <p:commandButton id="cbViewNovo" value="Novo" type="button" styleClass="cbViewNovo" onclick="dlgNovo.show();" />
                        </f:facet>

                        <!-- Colunas de edicao e exclusao -->
                        <p:column>
                            <f:facet name="header">
                                <h:outputLabel value="Editar"/>
                            </f:facet>
                            <p:commandButton id="cbViewEditar"  
                                             image="ui-icon-pencil" 
                                             title="Editar"
                                             update=":frmEditar:pEditarTipoEvento"
                                             oncomplete="dlgEditar.show();">
                                <f:setPropertyActionListener value="#{atual}" target="#{tipoEventoBean.tipoEventoSelecionado}" />
                            </p:commandButton>
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                <h:outputLabel value="Excluir"/>
                            </f:facet>
                            <p:commandButton id="cbViewExcluir" onclick="dlgExcluir.show();" 
                                             icon="ui-icon-close" title="Excluir">
                                <f:setPropertyActionListener value="#{atual}" 
                                                             target="#{tipoEventoBean.tipoEventoSelecionado}" />
                            </p:commandButton> 
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                Nome
                            </f:facet>
                            <h:outputLabel id="olViewTipoEventoNome" value="#{atual.nmeTipoEvento}"/>
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                Descrição
                            </f:facet>
                            <h:outputLabel id="olViewTipoEventoDesc" value="#{atual.dscTipoEvento}"/>
                        </p:column>
                    </p:dataTable>

                </h:form>

                <!-- Caixa de dialogo de inclusao -->
                <p:dialog id="dlgNovoTipoEvento" 
                          widgetVar="dlgNovo" 
                          modal="true" 
                          header="Novo tipo de evento"
                          resizable="false">
                    <h:form id="frmNovo">
                        <p:panel id="pNovoTipoEvento">
                            <p:messages id="mNovoMessages" redisplay="false" />
                            <p:panelGrid columns="2">
                                <p:outputLabel id="olNovoNomeTipoEvento" value="Nome:" for="itNovoNomeTipoEvento"/>
                                <p:inputText id="itNovoNomeTipoEvento" value="#{tipoEventoBean.nome}" 
                                             required="true"
                                             requiredMessage="Digite o nome do tipo evento."/>

                                <p:outputLabel id="olNovoDescricaoTipoEvento" for="itNovoDescricaoTipoEvento" value="Descrição:"/>
                                <p:inputTextarea rows="6" cols="33" id="itNovoDescricaoTipoEvento" value="#{tipoEventoBean.descricao}" 
                                             required="true"
                                             requiredMessage="Digite a descrição do tipo de evento."/>
                                <p:commandButton value="Cancelar" 
                                                 immediate="true" 
                                                 onclick="dlgNovo.hide();"/>
                                
                                <p:commandButton id="cbNovoSalvar" value="Salvar" 
                                                 actionListener="#{tipoEventoBean.cadastrarTipoEvento}"
                                                 oncomplete="handleSalvo(xhr, status, args);" 
                                                 update=":frmTiposEvento :frmNovo"
                                                 ajax="true"/>
                            </p:panelGrid>
                        </p:panel>
                    </h:form>
                </p:dialog>

                <!-- Caixa de dialogo de exclusao -->
                <p:confirmDialog id="dialogoExcluir" message="Deseja realmente excluir?"
                                 header="Excluir tipo de evento" severity="alert" 
                                 widgetVar="dlgExcluir">
                    <h:form id="frmExcluir">
                        <p:commandButton id="cbExcluirCancelar" value="Cancelar" 
                                         onclick="dlgExcluir.hide();" 
                                         type="button" /> 
                        <p:commandButton id="cbExcluirContinuar" value="Continuar"
                                         update=":frmTiposEvento" 
                                         oncomplete="dlgExcluir.hide();"
                                         actionListener="#{tipoEventoBean.excluirTipoEvento}"/>
                    </h:form>
                </p:confirmDialog>
                
                <!-- Caixa de dialogo de edicao -->
                <p:dialog id="dialogoEditar" 
                          widgetVar="dlgEditar" 
                          header="Editar tipo de evento"
                          resizable="false" modal="true">
                    <h:form id="frmEditar">
                        <p:panel id="pEditarTipoEvento">
                            <p:messages id="mEditarMessages" redisplay="false" />
                            <p:panelGrid columns="2">
                                <p:outputLabel id="olEditarNomeTipoEvento" value="Nome:" for="itEditarNomeTipoEvento"/>
                                <p:inputText id="itEditarNomeTipoEvento" value="#{tipoEventoBean.tipoEventoSelecionado.nmeTipoEvento}" 
                                             required="true"
                                             requiredMessage="Digite o nome do tipo de evento."/>

                                <p:outputLabel id="olEditarDescricaoTipoEvento" 
                                               for="itEditarDescricaoTipoEvento" 
                                               value="Descrição:"/>
                                <p:inputTextarea rows="6" cols="33" id="itEditarDescricaoTipoEvento" 
                                             value="#{tipoEventoBean.tipoEventoSelecionado.dscTipoEvento}" 
                                             required="true"
                                             requiredMessage="Digite a descrição do tipo de evento."/>
                                <p:commandButton value="Cancelar" immediate="true" 
                                                 onclick="dlgEditar.hide();"/>
                                <p:commandButton id="cbEditarSalvar" 
                                                 value="Salvar" 
                                                 actionListener="#{tipoEventoBean.alterarTipoEvento}"
                                                 oncomplete="handleEditado(xhr, status, args);" 
                                                 update=":frmTiposEvento :frmEditar"
                                                 ajax="true"/>
                            </p:panelGrid>
                        </p:panel>
                    </h:form>
                </p:dialog>
            </p:fieldset>
            <script type="text/javascript">
                function handleSalvo(xhr, status, args){
                    if(args.tipoEventoSalvo){
                        dlgNovo.hide();
                    }
                }
                function handleEditado(xhr, status, args){
                    if(args.tipoEventoAlterado){
                        dlgEditar.hide();
                    }
                }
            </script>
        </f:view>
    </ui:define>

</ui:composition>
